<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;

class Test extends Controller
{
    public function index()
    {
        // 快捷查询
        $row = Db::name('user')
//            ->where('id', 5)
//            ->where('id', '=', 5)
            ->where('id', '<', 5)
            ->select();

        $row = Db::name('user')
            ->where('id','in',[1,2,3,5,9,8,9999])
            ->select();

        $row = Db::name('user')
            ->where('age', '<',18)
            ->where('name','like', '%王%')
            ->select();

        $row = Db::name('user')
            ->where(['sex'=>'0'])
            ->whereOr(['province'=>'上海'])
            ->select();

        // 批量查询
        $row = Db::name('user')
            ->where([
                'id'=> ['between', '10,20'],
                'sex'=>['eq','0']
            ])
            ->select();
        $row = Db::name('user')
            ->where('sex', 'eq', 0)
            ->where('id', ['between', '1,3'], ['in',[6,66,666,6666]],'or')
            ->select();

        // 区间查询
        $row = Db::name('user')
            ->where('id', ['>',3], ['<', 9])
            ->select();


        // 多表查询
            // 手动多表
            $row =  Db::field(['u.name'=>'uname','l.name'=>'lname'])
                ->table(['hc_user'=>'u','hc_lover'=>'l'])
                ->where('u.id=l.user_id')
                ->select();
            /*
             SELECT ***
             FROM  B1,B2
             WHERE ID=IDS
             * */

            // JOIN
            $row = Db::table('hc_user')
                ->alias('u')
                ->field(['u.name'=>'uname','l.name'=>'lname'])
                ->join('hc_lover l', 'u.id = l.user_id')
                ->order('uname')
                ->select();

            // 视图
            $row = Db::view('hc_user',['name'=>'un'])
                ->view('hc_lover',['name'=>'ln'], 'hc_user.id = hc_lover.user_id')
                ->select();


        // 聚合查询
        $row = Db::name('user')->count();
        $row = Db::name('user')->avg('age');

        $row = Db::name('user')
            ->field('province, count(id)')
            ->group('province')
            ->select();

        $row = Db::name('user')
            ->field('province, group_concat(name)')
            ->group('province')
            ->fetchSql(true)
            ->select();


        // 子查询
            // fetchSql 方式
                // 不执行 并返回SQL


//            // buildSql 方式
////            1). 只构建子 SQL,不执行
//            $query = Db::table('hc_user')
//                ->field(['id','name','sex','age'])
//                ->where('sex','eq','0')
//                ->buildSql();
//            var_dump($query);
//
////            2). 组装完整的SQL, 去执行
//            $row = Db::table($query . 'as u')
//                ->where('u.age','gt','18')
//                ->order('id', 'desc')
//                ->select();
//
//
//
        var_dump($row);
    }
}
